package controllers;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.Map.Entry;
import javax.swing.table.DefaultTableModel;
import models.Account;
import models.Bank;
import models.Person;
import models.utilities.UserReport;
import views.LoginFrame;
import views.MessageDialogs;
import views.UserFrame;
public class UserFrameController {
private static UserFrame frame = new UserFrame();
private Bank bank = new Bank();
private SerializableManager manager = new SerializableManager();
private Date date;
public UserFrameController() throws ParseException {
frame.setAddMoneyButtonActionListener(new AddMoneyButtonActionListener());
frame.setWithDrawButtonActionListener(new WithDrawMoneyButtonActionListener());
frame.setReportButtonActionListener(new ReportButtonActionListener());
bank.setContent(manager.deserializeBank().getContent());
Iterator<Entry<Person, ArrayList<Account>>> iterator = bank.getContent().entrySet().iterator();
while (iterator.hasNext()) {
Entry<Person, ArrayList<Account>> entry = iterator.next();
System.out.println(entry.getKey().getName());
for (int i = 0; i < entry.getValue().size(); i++) {
if (entry.getValue().get(i).getP().getName().equals(LoginFrame.getUserName())) {
Object[] row1 = { entry.getKey().getId(), entry.getKey().getName(), entry.getValue().get(i).getId(),
entry.getValue().get(i).getSum(), entry.getValue().get(i).getType(),
entry.getValue().get(i).getDate(), entry.getValue().get(i).getCloseDate() };
Object[] row = { entry.getValue().get(i).getId(), entry.getValue().get(i).getSum(),
entry.getKey().getName(), entry.getValue().get(i).getDate(),
entry.getValue().get(i).getCloseDate(), entry.getValue().get(i).getType() };
((DefaultTableModel) UserFrame.getTable().getModel()).addRow(row1);
((DefaultTableModel) UserFrame.getReflectionTable().getModel()).addRow(row);
}
}
}
}
public static void printTheAccount(Account a) {
Object[] row = { a.getP().getId(), a.getP().getName(), a.getSum(), a.getType(), a.getDate(), a.getCloseDate() };
((DefaultTableModel) UserFrame.getTable().getModel()).addRow(row);
}
public class AddMoneyButtonActionListener implements ActionListener {
@Override
public void actionPerformed(final ActionEvent e) {
String data[] = MessageDialogs.addMoneyWindow();
Iterator<Entry<Person, ArrayList<Account>>> iterator = bank.getContent().entrySet().iterator();
int row = MessageDialogs.getRowByValue(UserFrame.getTable().getModel(), Integer.parseInt(data[2]));
while (iterator.hasNext()) {
Entry<Person, ArrayList<Account>> entry = iterator.next();
for (int i = 0; i < entry.getValue().size(); i++) {
if (entry.getValue().get(i).getId() == Integer.parseInt(data[2])) {
entry.getValue().get(i).depositMoney(Double.parseDouble(data[3]));
UserFrame.getTable().getModel().setValueAt(new Double(entry.getValue().get(i).getSum()), row,
3);
date = new Date();
try {
frame.details(entry.getValue().get(i), date);
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
manager.serializeBank(bank);
}
}
public class WithDrawMoneyButtonActionListener implements ActionListener {
@Override
public void actionPerformed(final ActionEvent e) {
String data[] = MessageDialogs.withDrawMoneyWindow();
Iterator<Entry<Person, ArrayList<Account>>> iterator = bank.getContent().entrySet().iterator();
int row = MessageDialogs.getRowByValue(UserFrame.getTable().getModel(), Integer.parseInt(data[2]));
while (iterator.hasNext()) {
Entry<Person, ArrayList<Account>> entry = iterator.next();
for (int i = 0; i < entry.getValue().size(); i++) {
if (entry.getValue().get(i).getId() == Integer.parseInt(data[2])) {
entry.getValue().get(i).withdrawMoney(Double.parseDouble(data[3]));
UserFrame.getTable().getModel().setValueAt(new Double(entry.getValue().get(i).getSum()), row,
3);
date = new Date();
try {
frame.details(entry.getValue().get(i), date);
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
manager.serializeBank(bank);
}
}
public class ReportButtonActionListener implements ActionListener {
@Override
public void actionPerformed(final ActionEvent e) {
new UserReport();
}
}
}